<?php
/**
 * function_vendor.php
 * 第三方库使用
 *
 * @author  王中艺
 * @date    2016-08-10
 */

/**
 * 发送邮件
 * @param   $address    收件人地址
 * @param   $title      邮件标题
 * @param   $message    邮件正文
 * @return  boolean
 */
function send_mail($address,$title,$message){
    vendor('PHPMailer.class#PHPMailer');
    
    $mail=new PHPMailer();
    $mail->IsSMTP();                // 设置PHPMailer使用SMTP服务器发送Email
    $mail->CharSet='UTF-8';         // 设置邮件的字符编码，若不指定，则为'UTF-8'
    $mail->AddAddress($address);    // 添加收件人地址，可以多次使用来添加多个收件人
    $mail->Body=$message;           // 设置邮件正文
    $mail->From=C('MAIL_ADDRESS');  // 设置邮件头的From字段。
    $mail->FromName='php_wangzy';   // 设置发件人名字
    $mail->Subject=$title;          // 设置邮件标题
    $mail->Host=C('MAIL_SMTP');     // 设置SMTP服务器。
    $mail->SMTPAuth=true;           // 设置为"需要验证"
    $mail->IsHTML(true);            //支持HTML

    //$mail->AddAttachment('xx.xls','我的附件.xls');        //发送附件

    // 设置用户名和密码。
    $mail->Username=C('MAIL_LOGINNAME');
    $mail->Password=C('MAIL_PASSWORD');

    return($mail->Send());          // 发送邮件。
}

/**
 * 导出Excel
 * @param   $titles(array)  表头    
 * @param   $datas(array)   数据
 * @param   $fileName   输出文件名
 */
function out_excel($titles, $datas, $fileName = null){
    vendor('PHPExcel.PHPExcel');

    $objPHPExcel = new \PHPExcel();
    $objPHPExcel->getProperties()->setCreator("ctos")
        ->setLastModifiedBy("ctos")
        ->setTitle("Office 2007 XLSX Test Document")
        ->setSubject("Office 2007 XLSX Test Document")
        ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
        ->setKeywords("office 2007 openxml php")
        ->setCategory("Test result file");

    //标题设置
    $column = count($titles);
    for($i = 0; $i < $column; $i++){
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue( chr(65+$i).'1', $titles[$i] );
    }

    //内容导入
    $i  = 1;
    foreach($datas as $data){
        $j  = 0;    $i++;
        foreach($data as $a_data){
            $j++;
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue( chr(64+$j).$i, ' '.$a_data );
        }
    }

    //文件下载
    $savename= ($fileName == null)?'Excel_'.date('Y-m-d_H:i:s'):$fileName;

    $ua = $_SERVER["HTTP_USER_AGENT"];
    $datetime = date('Y-m-d', time());
    if (preg_match("/MSIE/", $ua)) {
        $savename = urlencode($savename); //处理IE导出名称乱码
    }

    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="'.$savename.'.xls"');  //日期为文件名后缀
    header('Cache-Control: max-age=0');
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');  //excel5为xls格式，excel2007为xlsx格式
    $objWriter->save('php://output');
}

/**
 * 缩略图生成
 * @param   $imgUrl
 * //@param   $width  图票宽度    $height 图片高度
 * @param   $percent    图票压缩百分数
 * @return  Image
 */
function zip_image($imgUrl, $percent){
    Vendor('PHPThumb.ThumbLib#inc');

    if(!file_exists($imgUrl)){
        die('文件不存在!');
    }
    
    $thumb  = PhpThumbFactory::create($imgUrl);
    $thumb->resizePercent($percent);
    
    $thumb->show();
}

/**
 * 二维码生成
 * @param   $url
 */
function create_2d_code($url, $gdImage = false){
    Vendor('phpqrcode.phpqrcode');

    $qrCode = new \QRcode();
    $level  = 3;
    $size   = 4;
    if($gdImage == false){
        $qrCode->png($url, false, $level, $size, 2);
    }else{
        return $qrCode->pngGdImage($url, false, $level, $size, 2);
    }
    
}

/**
 * 获取音频信息
 * @param   $filePath 文件路径
 * @return  $audioInfo 文件信息
 */
function get_audio_info($audioPath, $field = false){
    Vendor('getID3.getid3');

    $GetID3     = new \getID3();
    $audioInfo   = $GetID3->analyze($audioPath);
    switch($field){
        case 'playtime_seconds':
            return ceil($audioInfo['playtime_seconds']);
        break;
        default:
            return $audioInfo;
        break;
    }
}
